package be.ipl.ieco.dtos;

import ieco.domaine.Etudiant;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class EtudiantDTO implements Serializable {

	private static final long serialVersionUID = 1L;

	private int matricule;

	private String nom;

	private String prenom;

	private String email;

	private int annee;

	private boolean erasmus;

	private double janvier;

	private double juin;

	private double septembre;

	private String grade;

	private int numero;

	private String serie;

	public EtudiantDTO(){
	}
	
	public EtudiantDTO(Etudiant etudiant) {
		super();
		this.matricule = etudiant.getMatricule();
		this.nom = etudiant.getNom();
		this.prenom = etudiant.getPrenom();
		this.email = etudiant.getEmail();
		this.annee = etudiant.getAnnee();
		this.erasmus = etudiant.isErasmus();
		this.janvier = etudiant.getJanvier();
		this.juin = etudiant.getJuin();
		this.septembre = etudiant.getSeptembre();
		this.grade = etudiant.getGrade();
		this.numero = etudiant.getNumero();
		if (etudiant.getSerie() != null)
			this.serie = etudiant.getSerie().getCode();
		else
			this.serie = "";
	}

	public EtudiantDTO(int matricule, String nom, String prenom, String email,
			int annee, boolean erasmus, double janvier, double juin,
			double septembre, String grade, int numero, String serie) {
		super();
		this.matricule = matricule;
		this.nom = nom;
		this.prenom = prenom;
		this.email = email;
		this.annee = annee;
		this.erasmus = erasmus;
		this.janvier = janvier;
		this.juin = juin;
		this.septembre = septembre;
		this.grade = grade;
		this.numero = numero;
		this.serie = serie;
	}

	public int getMatricule() {
		return matricule;
	}

	public void setMatricule(int matricule) {
		this.matricule = matricule;
	}

	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	public String getPrenom() {
		return prenom;
	}

	public void setPrenom(String prenom) {
		this.prenom = prenom;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public int getAnnee() {
		return annee;
	}

	public void setAnnee(int annee) {
		this.annee = annee;
	}

	public boolean isErasmus() {
		return erasmus;
	}

	public void setErasmus(boolean erasmus) {
		this.erasmus = erasmus;
	}

	public double getJanvier() {
		return janvier;
	}

	public void setJanvier(double janvier) {
		this.janvier = janvier;
	}

	public double getJuin() {
		return juin;
	}

	public void setJuin(double juin) {
		this.juin = juin;
	}

	public double getSeptembre() {
		return septembre;
	}

	public void setSeptembre(double septembre) {
		this.septembre = septembre;
	}

	public String getGrade() {
		return grade;
	}

	public void setGrade(String grade) {
		this.grade = grade;
	}

	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}

	public String getSerie() {
		return serie;
	}

	public void setSerie(String serie) {
		this.serie = serie;
	}

	public static List<EtudiantDTO> convertirEnListeDEtudiantsDTO(
			List<Etudiant> etudiants) {
		List<EtudiantDTO> aRenvoyer = new ArrayList<EtudiantDTO>();
		Iterator<Etudiant> etudIter = etudiants.iterator();
		while (etudIter.hasNext()) {
			Etudiant etudiantCourant = etudIter.next();
			aRenvoyer.add(new EtudiantDTO(etudiantCourant));
		}
		return aRenvoyer;
	}
	
	public static List<Etudiant> mergeToListEtudiant(List<EtudiantDTO> etudiantsJSON, List<Etudiant> etudiantsDB) {
		
		for(int i=0 ;i<etudiantsJSON.size();i++){
			EtudiantDTO etudiantDTO = etudiantsJSON.get(i);
			Etudiant etudiantDB = etudiantsDB.get(i);
			etudiantDB.setNom(etudiantDTO.getNom());
			etudiantDB.setPrenom(etudiantDTO.getPrenom());
			etudiantDB.setEmail(etudiantDTO.getEmail());
			etudiantDB.setJanvier(etudiantDTO.getJanvier());
			etudiantDB.setJuin(etudiantDTO.getJuin());
			etudiantDB.setSeptembre(etudiantDTO.getSeptembre());
			etudiantDB.setGrade(etudiantDTO.getGrade());
		}
		
		return etudiantsDB;
		
	}

}
